package com.bicon.botu.mall.goods.mapper;

import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.bicon.botu.mall.goods.dto.ProductRepertoryIdListDto;
import com.bicon.botu.mall.goods.entity.Product;
import com.bicon.botu.mall.goods.vo.*;
import com.bicon.botu.core.dto.GlobalSearchDTO;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * Mapper 接口
 * </p>
 *
 * @author 孙永刚
 * @since 2017-07-19
 */
@Repository
public interface ProductMapper extends BaseMapper<Product> {


    /**
     * 商品列表
     *
     * @param page
     * @param map
     * @return
     */
    List<ProductListVo> getProductList(Page<ProductListVo> page, Map<String, Object> map);

    /**
     * 获取该商品的最高价和最低价
     *
     * @param map
     * @return
     */
    ProductPriceVo getMaxPriceAndMinPrice(Map<String, Object> map);

    /**
     * 查询频道表中是否有将要删除和下架的商品
     *
     * @param list
     * @return
     */
    Integer searchChannelGoods(List<String> list);


    Integer searCarefullyGoods(String goodId);


    /**
     * 全局搜索提供商品列表数据
     *
     * @param page
     * @param map
     * @return
     */
    List<GlobalSearchDTO> getProductListForRpc(Page<GlobalSearchDTO> page, Map<String, Object> map);

    /**
     * 根据商品名称搜索商品
     *
     * @param page
     * @param map
     * @return
     */
    List<ProductDrugVo> selectProductList(Page<ProductDrugVo> page, Map<String, Object> map);

    /**
     * 根据商品id查询物流信息
     *
     * @param productId 商品id
     * @return
     */
    LogisticsCenterDto selectLogisticsCenter(String productId);

    /**
     * 根据商品名查询商品名称和sku价格(医疗)
     *
     * @param map 商品名称
     * @return
     */
    List<DrugPriceVo> findByProductName(Map<String, String> map);

    /**
     * 查询商品库存信息
     * @param productRepertoryIdList
     * @return
     */
    List<ProductRepertoryIdListDto> selectProductRepertory(@Param("productRepertoryIdList") List<String> productRepertoryIdList);

    /**
     * 统计上下架数量
     * @return
     */
    List<Map<Integer,Object>> shelvesTotal();

}